<?php
// +-----------------------------------------------------------------------+
// |                                                                       |
// | WebFormsQA     (Question - Answer)                                    |
// | Copyright  (C) 2010                                                   |
// | Official site  www.scale-tech.ru                                      |
// | email          scale-tech@mail.ru                                     |
// | autor          Alexander Demachev                                     |
// |                                                                       |
// | This program is free software; you can redistribute it and/or modify  |
// | it under the terms of the GNU General Public License as published by  |
// | the Free Software Foundation; version 2 of the License.               |
// |                                                                       |
// | This program is distributed in the hope that it will be useful,       |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of        |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |
// | GNU General Public License for more details.                          |
// +-----------------------------------------------------------------------+

/*! 
 * @page LanguagePage Исходный код класса Language 
 * @include language.class.php
 */

/*! @addtogroup ClassWebFormsQA Основные классы проекта
 *  Группа включает основные классы используемые в проекте WebFormsQA
 *  @{
 */


/**
 * @class Language
 * @brief класс хранит список доступных языков, и путь к шаблону Smarty,
 *        вызов метода setLanguage подключает выбранный язык, используя вызов
 *        require_once для файла, содержащего константы, описанные через define()\n
 * @ref LanguagePage 
 */
class Language {

    /**
     * список языков, включает в себя ассоциативные индексы
     * "description" "filename" "template_path" например:
     * - $this->list[0]["description"]    = "Русский";                           // название языка
     * - $this->list[0]["filename"]       = "./includes/language/russian.php";   // файл с константнами на данном языке
     * - $this->list[0]["template_path"]  = "./templates/first/";                // путь с названием шаблона 
     * 
     * @var array $list
     */
    var $list = array();
    /** размер списка
     * @var integer $size
     */
    var $size = 0;
    /** название атрибута
     * @var string $name
     */
    var $name;
    /** тип атрибута
     * @var string $type
     */
    var $type;

    /**
     * @brief Конструктор, используется для добавления поддерживаемых языков в список
     * @param string $name_attr - название атрибута используются в строке запроса для смены текущего языка.
     * @param string $type_attr - тип атрибута
     */
    function Language($name_attr, $type_attr)
    {
        $this->name = $name_attr;
        $this->type = $type_attr;

        $this->list[0]["description"]    = "Русский";                           // путь с названием шаблона
        $this->list[0]["filename"]       = "./includes/language/russian.php";   // название языка
        $this->list[0]["template_path"]  = "./templates/first/";                // файл с константнами на данном языке

        $this->list[1]["description"]    =  "English";
        $this->list[1]["filename"]       =  "./includes/language/english.php";
        $this->list[1]["template_path"]  =  "./templates/first/";

        $this->size = 2;
    } // конструктор


    /**
     * @brief Метод установливает нужный язык по названию атрибута в строке запроса и его значению
     *        при отсутствие в списке языка с данным значением,
     *        устнавливается язык по умолчанию
     */
    function setLanguage()
    {
        $index = 0;

        if(isset($_GET["$this->name"])) {
            $index = $_GET["$this->name"];
        } else {
            if(isset($_SESSION["$this->name"])) $index = $_SESSION["$this->name"];
        }

        settype($index, $this->type);

        if($index < 0 || $index >= $this->size) $index = 0;

        $_SESSION["$this->name"] = $index;

        $filename = $this->list[$index]["filename"];

        if(file_exists( $filename )) {
            include_once( $filename );
        } else {
            die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
        }

    } // setLanguage

    /** 
     * @brief Функция возвращает путь к текущему выбранному шаблону
     * @return string
     */
    function getPathTemplate()
    {

        if(isset($_SESSION["$this->name"])) $index = $_SESSION["$this->name"];
        else $index = 0;

        $template_name = $this->list[$index]["template_path"];

        if(!file_exists($template_name)) {
            die( "<font color=red><b>ERROR: Couldn't find template dir!</b></font>" );
        }

        return $template_name;
    }

} // finish class Language

/*! @} */

?>
